{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "# 飞桨常规赛：PALM眼底彩照中黄斑中央凹定位"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## 0. 赛题介绍\n",
    "常规赛：PALM眼底彩照中黄斑中央凹定位由ISBI2019 PALM眼科挑战赛赛题再现，其中黄斑中央凹定位的任务旨在对眼科图像进行判断是否存在黄斑中央凹，并对其进行定位。\n",
    "\n",
    "数据集由中山大学中山眼科中心提供800张带黄斑中央凹坐标标注的眼底彩照供选手训练模型，另提供400张带标注数据供平台进行模型测试。图像分辨率为1444×1444，或2124×2056。黄斑中央凹坐标信息存储在xlsx文件中，名为“Fovea_Location_train”，第一列对应眼底图像的文件名(包括扩展名“.jpg”)，第二列包含x坐标，第三列包含y坐标。\n",
    "\n",
    "评价指标为平均欧式距离，计算每个测试样本预测的黄斑中央凹坐标与金标准的差距，最终计算平均的欧式距离。 最终评分为平均欧式距离的倒数。\n",
    "\n",
    "![](https://ai-studio-static-online.cdn.bcebos.com/d229312f2d244037b5ec3cce55da977ec4589408156b4947b49802373371bf2b)\n",
    "\n",
    "比赛链接: [常规赛：PALM眼底彩照中黄斑中央凹定位](https://aistudio.baidu.com/aistudio/competition/detail/86)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## 1. 包准备\n",
    "用resnet50加载一个训练更多的预训练模型。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/layers/utils.py:26: DeprecationWarning: `np.int` is a deprecated alias for the builtin `int`. To silence this warning, use `int` by itself. Doing this will not modify any behavior and is safe. When replacing `np.int`, you may wish to use e.g. `np.int64` or `np.int32` to specify the precision. If you wish to review your current use, check the release note link for additional information.\n",
      "Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations\n",
      "  def convert_to_list(value, n, name, dtype=np.int):\n"
     ]
    }
   ],
   "source": [
    "import os\r\n",
    "import pandas as pd\r\n",
    "import numpy as np\r\n",
    "import paddle\r\n",
    "import paddle.vision.transforms as T\r\n",
    "from paddle.io import Dataset\r\n",
    "from PIL import Image"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## 2. 数据准备\n",
    "### 2.1解压数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "! unzip -oq data/data100179/常规赛：PALM眼底彩照中黄斑中央凹定位.zip\r\n",
    "! rm -rf __MACOSX\r\n",
    "! mv 常规赛：PALM眼底彩照中黄斑中央凹定位 PLAM"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "### 2.2 配置数据集\n",
    "1. 因为数据中本身就有了这个图像名和标签，我们就不用生成数据列表了。直接继承io中的Dataset，用于读取数据。因为与开始说数据的大小有两种分辨率为1444×1444，或2124×2056。这里都放到了1440+360=1800，基本上取二者之间吧。\n",
    "2. 划分的比列为0.85，图像增强只有简单的色彩和水平翻转。\n",
    "3. 这里主要注意当图像大小发生了变化，对应的中央凹的坐标也需要进行相应的变化。数据增广就没有写几何变换有关的了，因为这样就要自己写一下对应增强。\n",
    "4. 最开始数据我还加上了是否存在的类别标签，但是后期效果不明显，可能是自己的原因，这里给注释了，大佬们觉得有道理也可是试试。\n",
    "### 2.3 数据说明\n",
    "![](https://ai-studio-static-online.cdn.bcebos.com/e1f6b8af16f049efa1bc41b998a142ed3615caba96fe4de491400cb39998f617)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "import warnings\r\n",
    "warnings.filterwarnings(\"ignore\") #拒绝烦人的警告信息"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "from paddle.io import DataLoader\r\n",
    "\r\n",
    "tpsize = 256 \r\n",
    "split = 0.9\r\n",
    "batch_size = 16\r\n",
    "\r\n",
    "class PLAMDatas(Dataset):\r\n",
    "    def __init__(self, data_path, class_xls, mode='train', transforms=None, re_size=tpsize):\r\n",
    "        super(PLAMDatas, self).__init__()\r\n",
    "        self.data_path = data_path\r\n",
    "        self.name_label = (pd.read_excel(class_xls)).values\r\n",
    "        lens = len(self.name_label)\r\n",
    "        if mode == 'train':\r\n",
    "            self.name_label = self.name_label[:int(split*lens)]\r\n",
    "        else:\r\n",
    "            self.name_label = self.name_label[int(split*lens):]\r\n",
    "        self.transforms = transforms\r\n",
    "        self.re_size = re_size\r\n",
    "        \r\n",
    "    def __getitem__(self, index):\r\n",
    "        name, x, y = self.name_label[index] # 得到的数据赋值一下\r\n",
    "        data_path = os.path.join(self.data_path, name) # 文件系统路径+图片的name=图片的路径\r\n",
    "        data = np.asarray(Image.open(data_path).convert('RGB'))\r\n",
    "        H, W, _ = data.shape\r\n",
    "        if self.transforms is not None:\r\n",
    "            data = self.transforms(data)\r\n",
    "        data = data.astype('float32')\r\n",
    "        \r\n",
    "        label = np.array([x * self.re_size / W, y * self.re_size / H]).astype('float32') # 图片大小变了，对应的坐标自然也要改变\r\n",
    "        return data, label\r\n",
    "        \r\n",
    "    def __len__(self):\r\n",
    "        return len(self.name_label)\r\n",
    "\r\n",
    "# 配置数据增广\r\n",
    "train_transforms = T.Compose([\r\n",
    "    T.Resize((tpsize, tpsize), interpolation='bicubic'), #都调整到1800 选用bicubic，放大不至于太失真\r\n",
    "   \tT.ToTensor()\r\n",
    "])\r\n",
    "\r\n",
    "val_transforms = T.Compose([\r\n",
    "    T.Resize((tpsize, tpsize), interpolation='bicubic'),\r\n",
    "    T.ToTensor()\r\n",
    "])\r\n",
    "\r\n",
    "# 配置数据集\r\n",
    "train_dataset = PLAMDatas(data_path='PLAM/Train/fundus_image', class_xls='PLAM/Train/Fovea_Location_train.xlsx', mode='train', transforms=train_transforms)\r\n",
    "val_dataset = PLAMDatas(data_path='PLAM/Train/fundus_image', class_xls='PLAM/Train/Fovea_Location_train.xlsx', mode='test', transforms=val_transforms)\r\n",
    "\r\n",
    "train_dataloader = DataLoader(dataset=train_dataset, \r\n",
    "                              batch_size=batch_size,\r\n",
    "                              shuffle=True, drop_last=False)\r\n",
    "dev_dataloader = DataLoader( dataset=val_dataset, \r\n",
    "                             batch_size=batch_size,\r\n",
    "                             shuffle=True, drop_last=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "这里也可以输出测试一下，看看数据读取有没有什么问题。避免后面报一堆错不知道哪儿去找问题。顺便看看点是不是点到位了。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "720 80\n",
      "45 5\n"
     ]
    }
   ],
   "source": [
    "print(len(train_dataset), len(val_dataset))\r\n",
    "print(len(train_dataloader), len(dev_dataloader))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## 3. 模型训练\n",
    "### 3.1 模型准备"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2021-08-14 01:16:03,678 - INFO - unique_endpoints {''}\n",
      "2021-08-14 01:16:03,680 - INFO - Downloading resnet50.pdparams from https://paddle-hapi.bj.bcebos.com/models/resnet50.pdparams\n",
      "100%|██████████| 151272/151272 [00:02<00:00, 65060.64it/s]\n",
      "2021-08-14 01:16:06,174 - INFO - File /home/aistudio/.cache/paddle/hapi/weights/resnet50.pdparams md5 checking...\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-------------------------------------------------------------------------------\n",
      "   Layer (type)         Input Shape          Output Shape         Param #    \n",
      "===============================================================================\n",
      "     Conv2D-1        [[1, 3, 256, 256]]   [1, 64, 128, 128]        9,408     \n",
      "   BatchNorm2D-1    [[1, 64, 128, 128]]   [1, 64, 128, 128]         256      \n",
      "      ReLU-1        [[1, 64, 128, 128]]   [1, 64, 128, 128]          0       \n",
      "    MaxPool2D-1     [[1, 64, 128, 128]]    [1, 64, 64, 64]           0       \n",
      "     Conv2D-3        [[1, 64, 64, 64]]     [1, 64, 64, 64]         4,096     \n",
      "   BatchNorm2D-3     [[1, 64, 64, 64]]     [1, 64, 64, 64]          256      \n",
      "      ReLU-2         [[1, 256, 64, 64]]    [1, 256, 64, 64]          0       \n",
      "     Conv2D-4        [[1, 64, 64, 64]]     [1, 64, 64, 64]        36,864     \n",
      "   BatchNorm2D-4     [[1, 64, 64, 64]]     [1, 64, 64, 64]          256      \n",
      "     Conv2D-5        [[1, 64, 64, 64]]     [1, 256, 64, 64]       16,384     \n",
      "   BatchNorm2D-5     [[1, 256, 64, 64]]    [1, 256, 64, 64]        1,024     \n",
      "     Conv2D-2        [[1, 64, 64, 64]]     [1, 256, 64, 64]       16,384     \n",
      "   BatchNorm2D-2     [[1, 256, 64, 64]]    [1, 256, 64, 64]        1,024     \n",
      " BottleneckBlock-1   [[1, 64, 64, 64]]     [1, 256, 64, 64]          0       \n",
      "     Conv2D-6        [[1, 256, 64, 64]]    [1, 64, 64, 64]        16,384     \n",
      "   BatchNorm2D-6     [[1, 64, 64, 64]]     [1, 64, 64, 64]          256      \n",
      "      ReLU-3         [[1, 256, 64, 64]]    [1, 256, 64, 64]          0       \n",
      "     Conv2D-7        [[1, 64, 64, 64]]     [1, 64, 64, 64]        36,864     \n",
      "   BatchNorm2D-7     [[1, 64, 64, 64]]     [1, 64, 64, 64]          256      \n",
      "     Conv2D-8        [[1, 64, 64, 64]]     [1, 256, 64, 64]       16,384     \n",
      "   BatchNorm2D-8     [[1, 256, 64, 64]]    [1, 256, 64, 64]        1,024     \n",
      " BottleneckBlock-2   [[1, 256, 64, 64]]    [1, 256, 64, 64]          0       \n",
      "     Conv2D-9        [[1, 256, 64, 64]]    [1, 64, 64, 64]        16,384     \n",
      "   BatchNorm2D-9     [[1, 64, 64, 64]]     [1, 64, 64, 64]          256      \n",
      "      ReLU-4         [[1, 256, 64, 64]]    [1, 256, 64, 64]          0       \n",
      "     Conv2D-10       [[1, 64, 64, 64]]     [1, 64, 64, 64]        36,864     \n",
      "  BatchNorm2D-10     [[1, 64, 64, 64]]     [1, 64, 64, 64]          256      \n",
      "     Conv2D-11       [[1, 64, 64, 64]]     [1, 256, 64, 64]       16,384     \n",
      "  BatchNorm2D-11     [[1, 256, 64, 64]]    [1, 256, 64, 64]        1,024     \n",
      " BottleneckBlock-3   [[1, 256, 64, 64]]    [1, 256, 64, 64]          0       \n",
      "     Conv2D-13       [[1, 256, 64, 64]]    [1, 128, 64, 64]       32,768     \n",
      "  BatchNorm2D-13     [[1, 128, 64, 64]]    [1, 128, 64, 64]         512      \n",
      "      ReLU-5         [[1, 512, 32, 32]]    [1, 512, 32, 32]          0       \n",
      "     Conv2D-14       [[1, 128, 64, 64]]    [1, 128, 32, 32]       147,456    \n",
      "  BatchNorm2D-14     [[1, 128, 32, 32]]    [1, 128, 32, 32]         512      \n",
      "     Conv2D-15       [[1, 128, 32, 32]]    [1, 512, 32, 32]       65,536     \n",
      "  BatchNorm2D-15     [[1, 512, 32, 32]]    [1, 512, 32, 32]        2,048     \n",
      "     Conv2D-12       [[1, 256, 64, 64]]    [1, 512, 32, 32]       131,072    \n",
      "  BatchNorm2D-12     [[1, 512, 32, 32]]    [1, 512, 32, 32]        2,048     \n",
      " BottleneckBlock-4   [[1, 256, 64, 64]]    [1, 512, 32, 32]          0       \n",
      "     Conv2D-16       [[1, 512, 32, 32]]    [1, 128, 32, 32]       65,536     \n",
      "  BatchNorm2D-16     [[1, 128, 32, 32]]    [1, 128, 32, 32]         512      \n",
      "      ReLU-6         [[1, 512, 32, 32]]    [1, 512, 32, 32]          0       \n",
      "     Conv2D-17       [[1, 128, 32, 32]]    [1, 128, 32, 32]       147,456    \n",
      "  BatchNorm2D-17     [[1, 128, 32, 32]]    [1, 128, 32, 32]         512      \n",
      "     Conv2D-18       [[1, 128, 32, 32]]    [1, 512, 32, 32]       65,536     \n",
      "  BatchNorm2D-18     [[1, 512, 32, 32]]    [1, 512, 32, 32]        2,048     \n",
      " BottleneckBlock-5   [[1, 512, 32, 32]]    [1, 512, 32, 32]          0       \n",
      "     Conv2D-19       [[1, 512, 32, 32]]    [1, 128, 32, 32]       65,536     \n",
      "  BatchNorm2D-19     [[1, 128, 32, 32]]    [1, 128, 32, 32]         512      \n",
      "      ReLU-7         [[1, 512, 32, 32]]    [1, 512, 32, 32]          0       \n",
      "     Conv2D-20       [[1, 128, 32, 32]]    [1, 128, 32, 32]       147,456    \n",
      "  BatchNorm2D-20     [[1, 128, 32, 32]]    [1, 128, 32, 32]         512      \n",
      "     Conv2D-21       [[1, 128, 32, 32]]    [1, 512, 32, 32]       65,536     \n",
      "  BatchNorm2D-21     [[1, 512, 32, 32]]    [1, 512, 32, 32]        2,048     \n",
      " BottleneckBlock-6   [[1, 512, 32, 32]]    [1, 512, 32, 32]          0       \n",
      "     Conv2D-22       [[1, 512, 32, 32]]    [1, 128, 32, 32]       65,536     \n",
      "  BatchNorm2D-22     [[1, 128, 32, 32]]    [1, 128, 32, 32]         512      \n",
      "      ReLU-8         [[1, 512, 32, 32]]    [1, 512, 32, 32]          0       \n",
      "     Conv2D-23       [[1, 128, 32, 32]]    [1, 128, 32, 32]       147,456    \n",
      "  BatchNorm2D-23     [[1, 128, 32, 32]]    [1, 128, 32, 32]         512      \n",
      "     Conv2D-24       [[1, 128, 32, 32]]    [1, 512, 32, 32]       65,536     \n",
      "  BatchNorm2D-24     [[1, 512, 32, 32]]    [1, 512, 32, 32]        2,048     \n",
      " BottleneckBlock-7   [[1, 512, 32, 32]]    [1, 512, 32, 32]          0       \n",
      "     Conv2D-26       [[1, 512, 32, 32]]    [1, 256, 32, 32]       131,072    \n",
      "  BatchNorm2D-26     [[1, 256, 32, 32]]    [1, 256, 32, 32]        1,024     \n",
      "      ReLU-9        [[1, 1024, 16, 16]]   [1, 1024, 16, 16]          0       \n",
      "     Conv2D-27       [[1, 256, 32, 32]]    [1, 256, 16, 16]       589,824    \n",
      "  BatchNorm2D-27     [[1, 256, 16, 16]]    [1, 256, 16, 16]        1,024     \n",
      "     Conv2D-28       [[1, 256, 16, 16]]   [1, 1024, 16, 16]       262,144    \n",
      "  BatchNorm2D-28    [[1, 1024, 16, 16]]   [1, 1024, 16, 16]        4,096     \n",
      "     Conv2D-25       [[1, 512, 32, 32]]   [1, 1024, 16, 16]       524,288    \n",
      "  BatchNorm2D-25    [[1, 1024, 16, 16]]   [1, 1024, 16, 16]        4,096     \n",
      " BottleneckBlock-8   [[1, 512, 32, 32]]   [1, 1024, 16, 16]          0       \n",
      "     Conv2D-29      [[1, 1024, 16, 16]]    [1, 256, 16, 16]       262,144    \n",
      "  BatchNorm2D-29     [[1, 256, 16, 16]]    [1, 256, 16, 16]        1,024     \n",
      "      ReLU-10       [[1, 1024, 16, 16]]   [1, 1024, 16, 16]          0       \n",
      "     Conv2D-30       [[1, 256, 16, 16]]    [1, 256, 16, 16]       589,824    \n",
      "  BatchNorm2D-30     [[1, 256, 16, 16]]    [1, 256, 16, 16]        1,024     \n",
      "     Conv2D-31       [[1, 256, 16, 16]]   [1, 1024, 16, 16]       262,144    \n",
      "  BatchNorm2D-31    [[1, 1024, 16, 16]]   [1, 1024, 16, 16]        4,096     \n",
      " BottleneckBlock-9  [[1, 1024, 16, 16]]   [1, 1024, 16, 16]          0       \n",
      "     Conv2D-32      [[1, 1024, 16, 16]]    [1, 256, 16, 16]       262,144    \n",
      "  BatchNorm2D-32     [[1, 256, 16, 16]]    [1, 256, 16, 16]        1,024     \n",
      "      ReLU-11       [[1, 1024, 16, 16]]   [1, 1024, 16, 16]          0       \n",
      "     Conv2D-33       [[1, 256, 16, 16]]    [1, 256, 16, 16]       589,824    \n",
      "  BatchNorm2D-33     [[1, 256, 16, 16]]    [1, 256, 16, 16]        1,024     \n",
      "     Conv2D-34       [[1, 256, 16, 16]]   [1, 1024, 16, 16]       262,144    \n",
      "  BatchNorm2D-34    [[1, 1024, 16, 16]]   [1, 1024, 16, 16]        4,096     \n",
      "BottleneckBlock-10  [[1, 1024, 16, 16]]   [1, 1024, 16, 16]          0       \n",
      "     Conv2D-35      [[1, 1024, 16, 16]]    [1, 256, 16, 16]       262,144    \n",
      "  BatchNorm2D-35     [[1, 256, 16, 16]]    [1, 256, 16, 16]        1,024     \n",
      "      ReLU-12       [[1, 1024, 16, 16]]   [1, 1024, 16, 16]          0       \n",
      "     Conv2D-36       [[1, 256, 16, 16]]    [1, 256, 16, 16]       589,824    \n",
      "  BatchNorm2D-36     [[1, 256, 16, 16]]    [1, 256, 16, 16]        1,024     \n",
      "     Conv2D-37       [[1, 256, 16, 16]]   [1, 1024, 16, 16]       262,144    \n",
      "  BatchNorm2D-37    [[1, 1024, 16, 16]]   [1, 1024, 16, 16]        4,096     \n",
      "BottleneckBlock-11  [[1, 1024, 16, 16]]   [1, 1024, 16, 16]          0       \n",
      "     Conv2D-38      [[1, 1024, 16, 16]]    [1, 256, 16, 16]       262,144    \n",
      "  BatchNorm2D-38     [[1, 256, 16, 16]]    [1, 256, 16, 16]        1,024     \n",
      "      ReLU-13       [[1, 1024, 16, 16]]   [1, 1024, 16, 16]          0       \n",
      "     Conv2D-39       [[1, 256, 16, 16]]    [1, 256, 16, 16]       589,824    \n",
      "  BatchNorm2D-39     [[1, 256, 16, 16]]    [1, 256, 16, 16]        1,024     \n",
      "     Conv2D-40       [[1, 256, 16, 16]]   [1, 1024, 16, 16]       262,144    \n",
      "  BatchNorm2D-40    [[1, 1024, 16, 16]]   [1, 1024, 16, 16]        4,096     \n",
      "BottleneckBlock-12  [[1, 1024, 16, 16]]   [1, 1024, 16, 16]          0       \n",
      "     Conv2D-41      [[1, 1024, 16, 16]]    [1, 256, 16, 16]       262,144    \n",
      "  BatchNorm2D-41     [[1, 256, 16, 16]]    [1, 256, 16, 16]        1,024     \n",
      "      ReLU-14       [[1, 1024, 16, 16]]   [1, 1024, 16, 16]          0       \n",
      "     Conv2D-42       [[1, 256, 16, 16]]    [1, 256, 16, 16]       589,824    \n",
      "  BatchNorm2D-42     [[1, 256, 16, 16]]    [1, 256, 16, 16]        1,024     \n",
      "     Conv2D-43       [[1, 256, 16, 16]]   [1, 1024, 16, 16]       262,144    \n",
      "  BatchNorm2D-43    [[1, 1024, 16, 16]]   [1, 1024, 16, 16]        4,096     \n",
      "BottleneckBlock-13  [[1, 1024, 16, 16]]   [1, 1024, 16, 16]          0       \n",
      "     Conv2D-45      [[1, 1024, 16, 16]]    [1, 512, 16, 16]       524,288    \n",
      "  BatchNorm2D-45     [[1, 512, 16, 16]]    [1, 512, 16, 16]        2,048     \n",
      "      ReLU-15        [[1, 2048, 8, 8]]     [1, 2048, 8, 8]           0       \n",
      "     Conv2D-46       [[1, 512, 16, 16]]     [1, 512, 8, 8]       2,359,296   \n",
      "  BatchNorm2D-46      [[1, 512, 8, 8]]      [1, 512, 8, 8]         2,048     \n",
      "     Conv2D-47        [[1, 512, 8, 8]]     [1, 2048, 8, 8]       1,048,576   \n",
      "  BatchNorm2D-47     [[1, 2048, 8, 8]]     [1, 2048, 8, 8]         8,192     \n",
      "     Conv2D-44      [[1, 1024, 16, 16]]    [1, 2048, 8, 8]       2,097,152   \n",
      "  BatchNorm2D-44     [[1, 2048, 8, 8]]     [1, 2048, 8, 8]         8,192     \n",
      "BottleneckBlock-14  [[1, 1024, 16, 16]]    [1, 2048, 8, 8]           0       \n",
      "     Conv2D-48       [[1, 2048, 8, 8]]      [1, 512, 8, 8]       1,048,576   \n",
      "  BatchNorm2D-48      [[1, 512, 8, 8]]      [1, 512, 8, 8]         2,048     \n",
      "      ReLU-16        [[1, 2048, 8, 8]]     [1, 2048, 8, 8]           0       \n",
      "     Conv2D-49        [[1, 512, 8, 8]]      [1, 512, 8, 8]       2,359,296   \n",
      "  BatchNorm2D-49      [[1, 512, 8, 8]]      [1, 512, 8, 8]         2,048     \n",
      "     Conv2D-50        [[1, 512, 8, 8]]     [1, 2048, 8, 8]       1,048,576   \n",
      "  BatchNorm2D-50     [[1, 2048, 8, 8]]     [1, 2048, 8, 8]         8,192     \n",
      "BottleneckBlock-15   [[1, 2048, 8, 8]]     [1, 2048, 8, 8]           0       \n",
      "     Conv2D-51       [[1, 2048, 8, 8]]      [1, 512, 8, 8]       1,048,576   \n",
      "  BatchNorm2D-51      [[1, 512, 8, 8]]      [1, 512, 8, 8]         2,048     \n",
      "      ReLU-17        [[1, 2048, 8, 8]]     [1, 2048, 8, 8]           0       \n",
      "     Conv2D-52        [[1, 512, 8, 8]]      [1, 512, 8, 8]       2,359,296   \n",
      "  BatchNorm2D-52      [[1, 512, 8, 8]]      [1, 512, 8, 8]         2,048     \n",
      "     Conv2D-53        [[1, 512, 8, 8]]     [1, 2048, 8, 8]       1,048,576   \n",
      "  BatchNorm2D-53     [[1, 2048, 8, 8]]     [1, 2048, 8, 8]         8,192     \n",
      "BottleneckBlock-16   [[1, 2048, 8, 8]]     [1, 2048, 8, 8]           0       \n",
      "AdaptiveAvgPool2D-1  [[1, 2048, 8, 8]]     [1, 2048, 1, 1]           0       \n",
      "     Linear-1           [[1, 2048]]           [1, 1000]          2,049,000   \n",
      "     ResNet-1        [[1, 3, 256, 256]]       [1, 1000]              0       \n",
      "    LeakyReLU-1         [[1, 1000]]           [1, 1000]              0       \n",
      "     Linear-2           [[1, 1000]]             [1, 2]             2,002     \n",
      "===============================================================================\n",
      "Total params: 25,612,154\n",
      "Trainable params: 25,505,914\n",
      "Non-trainable params: 106,240\n",
      "-------------------------------------------------------------------------------\n",
      "Input size (MB): 0.75\n",
      "Forward/backward pass size (MB): 341.54\n",
      "Params size (MB): 97.70\n",
      "Estimated Total Size (MB): 439.99\n",
      "-------------------------------------------------------------------------------\n",
      "\n"
     ]
    }
   ],
   "source": [
    "import paddle\r\n",
    "import paddle.nn as nn\r\n",
    "from paddle.vision.models import resnet50\r\n",
    "\r\n",
    "# 模型定义\r\n",
    "# pre_params = paddle.load('resnet_50_save_models/final.pdparams')\r\n",
    "# model.set_state_dict(pre_params)\r\n",
    "model = nn.Sequential(\r\n",
    "    resnet50(pretrained=True),\r\n",
    "    nn.LeakyReLU(),\r\n",
    "    nn.Linear(1000, 2)  # 坐标定位\r\n",
    ")\r\n",
    "paddle.summary(model, (1, 3, tpsize, tpsize))\r\n",
    "model = paddle.Model(model)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "```\n",
    "2021-07-23 14:09:08,122 - INFO - unique_endpoints {''}\n",
    "2021-07-23 14:09:08,124 - INFO - Downloading resnet50.pdparams from https://paddle-hapi.bj.bcebos.com/models/resnet50.pdparams\n",
    "100%|██████████| 151272/151272 [00:02<00:00, 61339.97it/s]\n",
    "2021-07-23 14:09:10,837 - INFO - File /home/aistudio/.cache/paddle/hapi/weights/resnet50.pdparams md5 checking...\n",
    "-------------------------------------------------------------------------------\n",
    "   Layer (type)         Input Shape          Output Shape         Param #    \n",
    "===============================================================================\n",
    "     Conv2D-1        [[1, 3, 256, 256]]   [1, 64, 128, 128]        9,408     \n",
    "   BatchNorm2D-1    [[1, 64, 128, 128]]   [1, 64, 128, 128]         256      \n",
    "      ReLU-1        [[1, 64, 128, 128]]   [1, 64, 128, 128]          0       \n",
    "    MaxPool2D-1     [[1, 64, 128, 128]]    [1, 64, 64, 64]           0       \n",
    "     Conv2D-3        [[1, 64, 64, 64]]     [1, 64, 64, 64]         4,096     \n",
    "--------------------------------省略-------------------------------------------\n",
    "BottleneckBlock-16   [[1, 2048, 8, 8]]     [1, 2048, 8, 8]           0       \n",
    "AdaptiveAvgPool2D-1  [[1, 2048, 8, 8]]     [1, 2048, 1, 1]           0       \n",
    "     Linear-1           [[1, 2048]]           [1, 1000]          2,049,000   \n",
    "     ResNet-1        [[1, 3, 256, 256]]       [1, 1000]              0       \n",
    "    LeakyReLU-1         [[1, 1000]]           [1, 1000]              0       \n",
    "     Linear-2           [[1, 1000]]             [1, 2]             2,002     \n",
    "===============================================================================\n",
    "Total params: 25,612,154\n",
    "Trainable params: 25,505,914\n",
    "Non-trainable params: 106,240\n",
    "-------------------------------------------------------------------------------\n",
    "Input size (MB): 0.75\n",
    "Forward/backward pass size (MB): 341.54\n",
    "Params size (MB): 97.70\n",
    "Estimated Total Size (MB): 439.99\n",
    "-------------------------------------------------------------------------------\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "### 3.2 损失设定\n",
    "这里采用红白黑大佬设计了loss损失函数，计算MSE和欧氏距离加权后的平均损失值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# 自定义损失\r\n",
    "import paddle\r\n",
    "import paddle.nn as nn\r\n",
    "import paddle.nn.functional as F\r\n",
    "\r\n",
    "class FocusBCELoss(nn.Layer):\r\n",
    "    '''\r\n",
    "        本赛题的任务损失函数\r\n",
    "    '''\r\n",
    "    def __init__(self, weights=[0.5, 0.5]):\r\n",
    "        super(FocusBCELoss, self).__init__()\r\n",
    "        self.weights = weights  # 损失权重\r\n",
    "\r\n",
    "    def forward(self, predict, label):\r\n",
    "        # MSE均方误差\r\n",
    "        mse_loss_x = paddle.nn.functional.mse_loss(predict[:, 0], label[:, 0], reduction='mean')\r\n",
    "        mse_loss_y = paddle.nn.functional.mse_loss(predict[:, 1], label[:, 1], reduction='mean')\r\n",
    "        mse_loss = 0.5 * mse_loss_x + 0.5 * mse_loss_y\r\n",
    "\r\n",
    "        # 欧氏距离\r\n",
    "        distance_loss = paddle.subtract(predict, label)\r\n",
    "        distance_loss = paddle.square(distance_loss)\r\n",
    "        distance_loss = paddle.sum(distance_loss, axis=-1)\r\n",
    "        distance_loss = paddle.sqrt(distance_loss)\r\n",
    "        distance_loss = paddle.sum(distance_loss, axis=0) / predict.shape[0]   # predict.shape[0] == batch_size\r\n",
    "        \r\n",
    "        alpha1, alpha2 = self.weights\r\n",
    "        all_loss = alpha1*mse_loss + alpha2*distance_loss\r\n",
    "\r\n",
    "        return all_loss, mse_loss, distance_loss"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "### 3.3 开始训练\n",
    "这里采用PolynomialDecay跑\n",
    "\n",
    "**运行时长: 16小时20分钟53秒401毫秒**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# 模型准备\r\n",
    "epochs = 1000\r\n",
    "\r\n",
    "lr = paddle.optimizer.lr.PolynomialDecay(learning_rate=2e-3, decay_steps=int(800*tpsize))\r\n",
    "opt = paddle.optimizer.Adam(learning_rate=lr, parameters=model.parameters(), weight_decay=paddle.regularizer.L2Decay(5e-6))\r\n",
    "loss  = FocusBCELoss(weights=[0.4, 0.6])   # weights，不同类别的损失权重\r\n",
    "\r\n",
    "model.prepare(\r\n",
    "    optimizer = opt, \r\n",
    "    loss = loss\r\n",
    "    )\r\n",
    "visualdl=paddle.callbacks.VisualDL(log_dir='visual_log')\r\n",
    "\r\n",
    "#在使用GPU机器时，可以将use_gpu变量设置成True\r\n",
    "use_gpu = True\r\n",
    "paddle.set_device('gpu:0') if use_gpu else paddle.set_device('cpu')\r\n",
    "\r\n",
    "\r\n",
    "# 模型微调\r\n",
    "model.fit(\r\n",
    "    train_data=train_dataset, \r\n",
    "    eval_data=val_dataset, \r\n",
    "    batch_size=batch_size, \r\n",
    "    epochs=epochs, \r\n",
    "    eval_freq=10, \r\n",
    "    log_freq=1, \r\n",
    "    save_dir='resnet_50_save_models_256_0.9_16', \r\n",
    "    save_freq=10, \r\n",
    "    verbose=1, \r\n",
    "    drop_last=False, \r\n",
    "    shuffle=True, \r\n",
    "    num_workers=0,\r\n",
    "    callbacks=[visualdl]\r\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "跑完1000轮之后的loss基本上稳定在了0.5-2.5  \n",
    "```\n",
    "Epoch 993/1000\n",
    "step 45/45 [==============================] - loss: 0.7025 0.5066 0.8331 - 1s/step        \n",
    "Epoch 994/1000\n",
    "step 45/45 [==============================] - loss: 1.8822 2.1647 1.6938 - 1s/step        \n",
    "Epoch 995/1000\n",
    "step 45/45 [==============================] - loss: 2.5339 2.9379 2.2646 - 1s/step         \n",
    "Epoch 996/1000\n",
    "step 45/45 [==============================] - loss: 1.3060 1.2016 1.3756 - 1s/step         \n",
    "Epoch 997/1000\n",
    "step 45/45 [==============================] - loss: 0.7337 0.4999 0.8896 - 1s/step         \n",
    "Epoch 998/1000\n",
    "step 45/45 [==============================] - loss: 1.0640 0.8573 1.2018 - 1s/step        \n",
    "Epoch 999/1000\n",
    "step 45/45 [==============================] - loss: 1.3307 1.1557 1.4473 - 1s/step        \n",
    "Epoch 1000/1000\n",
    "step 45/45 [==============================] - loss: 0.5870 0.3452 0.7482 - 1s/step\n",
    "```\n",
    "\n",
    "**可视化情况如下：**   \n",
    "\n",
    "![](https://ai-studio-static-online.cdn.bcebos.com/87fb75fed9aa43e39b88a8c072f399bb02b533168f194b878bbc498463750d47)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## 4. 模型预测\n",
    "预测这里就是因为图像的大小变了，所以预测得到的坐标还需要进行一次计算还原到原来的大小，感觉这也是误差的一个来源。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "T0216.jpg [1109.5578961372375, 1080.1234693527222]\n",
      "T0083.jpg [1116.6439661979675, 1067.9147095680237]\n",
      "T0250.jpg [1195.3940155506134, 976.6332592964172]\n",
      "T0307.jpg [1088.7634227275848, 1079.4880623817444]\n",
      "T0303.jpg [1430.457792520523, 1091.374768257141]\n",
      "T0343.jpg [1102.0680978298187, 1102.8794946670532]\n",
      "T0065.jpg [1317.4877080917358, 769.0483863353729]\n",
      "T0174.jpg [1237.3455455303192, 1050.8257546424866]\n",
      "T0032.jpg [1102.4422016143799, 1121.04416847229]\n",
      "T0084.jpg [1006.2987949848175, 1008.0976076126099]\n",
      "T0171.jpg [1068.3830587863922, 1110.671287536621]\n",
      "T0116.jpg [1278.5564639568329, 1006.6066377162933]\n",
      "T0052.jpg [1085.7151415348053, 1071.4161267280579]\n",
      "T0107.jpg [1350.0486466884613, 1071.0678477287292]\n",
      "T0113.jpg [1200.5555083751678, 1021.1685478687286]\n",
      "T0365.jpg [1077.6161427497864, 1113.3708786964417]\n",
      "T0128.jpg [1098.362254858017, 1128.429717540741]\n",
      "T0363.jpg [1182.193152666092, 1021.8014426231384]\n",
      "T0268.jpg [1204.709263086319, 1019.9740195274353]\n",
      "T0322.jpg [1170.3699538707733, 1105.0174522399902]\n",
      "T0309.jpg [1032.7904069423676, 1062.9429717063904]\n",
      "T0249.jpg [1097.7691326141357, 1043.1780772209167]\n",
      "T0152.jpg [882.2494022846222, 711.027910232544]\n",
      "T0141.jpg [1348.8326137065887, 727.2472891807556]\n",
      "T0205.jpg [1170.6067316532135, 684.8925955295563]\n",
      "T0294.jpg [1044.5806896686554, 1061.7178678512573]\n",
      "T0058.jpg [1173.7232151031494, 1053.289810180664]\n",
      "T0206.jpg [1079.287519454956, 1047.5709023475647]\n",
      "T0123.jpg [1165.3269588947296, 1023.573474407196]\n",
      "T0328.jpg [1098.519618988037, 1135.5750741958618]\n",
      "T0374.jpg [1176.5238661766052, 1073.3706312179565]\n",
      "T0242.jpg [1288.7341125011444, 988.3909230232239]\n",
      "T0150.jpg [1279.033493757248, 1118.8031487464905]\n",
      "T0080.jpg [1288.661787033081, 808.1034486293793]\n",
      "T0324.jpg [1075.4029169082642, 1041.8731951713562]\n",
      "T0089.jpg [1122.825983762741, 1103.4782600402832]\n",
      "T0063.jpg [1057.5282254219055, 1033.062177658081]\n",
      "T0091.jpg [1254.365938425064, 1101.3526797294617]\n",
      "T0227.jpg [1145.1549789905548, 1031.5998225212097]\n",
      "T0021.jpg [1003.5937904119492, 1107.560673236847]\n",
      "T0241.jpg [1421.7308564186096, 974.6236085891724]\n",
      "T0019.jpg [1034.5098284482956, 1127.025694847107]\n",
      "T0111.jpg [980.2831367254257, 1045.3967933654785]\n",
      "T0297.jpg [1388.342034816742, 825.672821521759]\n",
      "T0213.jpg [1227.5173137187958, 1039.6675915718079]\n",
      "T0264.jpg [1281.228945016861, 744.5246295928955]\n",
      "T0255.jpg [1056.0683344602585, 1133.305500984192]\n",
      "T0257.jpg [1072.9542145729065, 1105.8649883270264]\n",
      "T0339.jpg [1071.4937539100647, 1016.8162245750427]\n",
      "T0200.jpg [1050.3808175325394, 1071.9547214508057]\n",
      "T0318.jpg [1126.0930302143097, 1119.7293601036072]\n",
      "T0062.jpg [1048.273556113243, 998.7415616512299]\n",
      "T0077.jpg [1046.9930577278137, 1085.8395586013794]\n",
      "T0262.jpg [1313.3617887496948, 1101.4062328338623]\n",
      "T0046.jpg [1107.7271296977997, 1133.7563519477844]\n",
      "T0119.jpg [1140.0632429122925, 1093.3249835968018]\n",
      "T0265.jpg [1004.8234587907791, 1099.132493019104]\n",
      "T0298.jpg [1041.9260720014572, 1120.4903779029846]\n",
      "T0261.jpg [1286.8070032596588, 1000.6403071880341]\n",
      "T0147.jpg [1071.8833029270172, 1047.6372003555298]\n",
      "T0155.jpg [1404.4734511375427, 734.9517652988434]\n",
      "T0151.jpg [1241.2092590332031, 989.9915726184845]\n",
      "T0024.jpg [1289.8295845985413, 1096.3612117767334]\n",
      "T0138.jpg [1124.6313035488129, 1055.2664957046509]\n",
      "T0067.jpg [772.1550507545471, 642.343945145607]\n",
      "T0319.jpg [1281.1977252960205, 1082.6549258232117]\n",
      "T0291.jpg [1101.9363069534302, 1114.249541759491]\n",
      "T0370.jpg [1008.219889163971, 673.6063104867935]\n",
      "T0210.jpg [1294.0668954849243, 979.0881237983704]\n",
      "T0336.jpg [1243.5888376235962, 1088.4221172332764]\n",
      "T0277.jpg [1073.2735004425049, 1119.877519607544]\n",
      "T0112.jpg [1027.7399425506592, 1043.4474358558655]\n",
      "T0295.jpg [1002.4249534606934, 1029.2497358322144]\n",
      "T0096.jpg [1154.7002592086792, 1065.9783420562744]\n",
      "T0129.jpg [1111.5434947013855, 1110.94420003891]\n",
      "T0357.jpg [1026.6334562301636, 1004.9556212425232]\n",
      "T0168.jpg [1052.540934562683, 1023.3564434051514]\n",
      "T0279.jpg [1346.018707036972, 976.0196044445038]\n",
      "T0118.jpg [1112.7449312210083, 1064.8195362091064]\n",
      "T0193.jpg [1119.6345176696777, 1096.2722425460815]\n",
      "T0372.jpg [1229.9313275814056, 1076.78271150589]\n",
      "T0379.jpg [1168.4375274181366, 1130.4093441963196]\n",
      "T0104.jpg [1053.746675491333, 1039.2972540855408]\n",
      "T0161.jpg [1057.9605020284653, 1103.6435761451721]\n",
      "T0243.jpg [1037.999501466751, 1081.7200136184692]\n",
      "T0222.jpg [1295.280105829239, 1025.3918290138245]\n",
      "T0189.jpg [1099.677758216858, 1104.7211332321167]\n",
      "T0035.jpg [1313.5283570289612, 771.5739982128143]\n",
      "T0384.jpg [1047.45907330513, 1081.8877806663513]\n",
      "T0225.jpg [1276.141437292099, 1037.73073387146]\n",
      "T0039.jpg [1124.942487001419, 1119.17262840271]\n",
      "T0169.jpg [989.2931510210037, 1089.1093616485596]\n",
      "T0236.jpg [828.0407547950745, 738.471905708313]\n",
      "T0050.jpg [1168.4701902866364, 958.59241938591]\n",
      "T0092.jpg [1551.5510730743408, 1068.7041583061218]\n",
      "T0095.jpg [1089.63316655159, 1103.2530183792114]\n",
      "T0109.jpg [1202.6282079219818, 999.3264791965485]\n",
      "T0313.jpg [1015.2073391675949, 1058.825264930725]\n",
      "T0274.jpg [1037.1087419986725, 1063.787076473236]\n",
      "T0041.jpg [1135.3824331760406, 851.443719625473]\n",
      "T0373.jpg [1233.835426568985, 1098.1578755378723]\n",
      "T0376.jpg [1125.5147202014923, 1022.9131290912628]\n",
      "T0212.jpg [1137.7006287574768, 1102.0038952827454]\n",
      "T0300.jpg [1241.8798606395721, 998.0844025611877]\n",
      "T0097.jpg [1217.108746290207, 1082.7660760879517]\n",
      "T0182.jpg [1375.2646343708038, 999.9354772567749]\n",
      "T0185.jpg [1096.332852602005, 1106.603702545166]\n",
      "T0086.jpg [1081.0294125080109, 1094.4081778526306]\n",
      "T0214.jpg [1005.4163278341293, 1113.3342370986938]\n",
      "T0217.jpg [1073.2965416908264, 1097.9581236839294]\n",
      "T0381.jpg [1165.706379890442, 1144.8499326705933]\n",
      "T0029.jpg [1338.1622743606567, 1022.4965913295746]\n",
      "T0142.jpg [1201.6260402202606, 1062.5814576148987]\n",
      "T0122.jpg [1326.8837864398956, 795.0116488933563]\n",
      "T0342.jpg [1178.2086625099182, 1072.3107209205627]\n",
      "T0362.jpg [1095.443232536316, 1053.1047639846802]\n",
      "T0054.jpg [1177.8186070919037, 977.6787090301514]\n",
      "T0130.jpg [1222.8577909469604, 968.8629734516144]\n",
      "T0311.jpg [1226.8419013023376, 989.1496737003326]\n",
      "T0075.jpg [1261.402887582779, 1139.5422930717468]\n",
      "T0031.jpg [1102.2487564086914, 1064.6112060546875]\n",
      "T0218.jpg [1203.7850811481476, 1000.0189318656921]\n",
      "T0040.jpg [1051.4006459712982, 1087.4691905975342]\n",
      "T0048.jpg [1073.9395444393158, 1104.9631638526917]\n",
      "T0005.jpg [1229.6374869346619, 723.297233581543]\n",
      "T0102.jpg [1257.7474315166473, 961.8997218608856]\n",
      "T0172.jpg [1293.2118372917175, 1092.000494003296]\n",
      "T0078.jpg [1006.2122004032135, 1031.466736316681]\n",
      "T0014.jpg [1093.721215724945, 1059.9099297523499]\n",
      "T0292.jpg [1046.9833728075027, 1066.429560661316]\n",
      "T0272.jpg [1328.8453810214996, 1013.1677508354187]\n",
      "T0194.jpg [1232.7707183361053, 1020.9293971061707]\n",
      "T0266.jpg [1273.6983053684235, 1010.1503949165344]\n",
      "T0335.jpg [1051.5481985807419, 1152.6270198822021]\n",
      "T0149.jpg [1082.7453525066376, 1147.7183938026428]\n",
      "T0008.jpg [1232.7707183361053, 1020.9293971061707]\n",
      "T0087.jpg [749.5038135051727, 726.6437726020813]\n",
      "T0127.jpg [1310.9430992603302, 800.4663646221161]\n",
      "T0017.jpg [1094.3000321388245, 1059.855763912201]\n",
      "T0158.jpg [1227.1506793498993, 1001.6843476295471]\n",
      "T0239.jpg [1289.3289086818695, 771.1927981376648]\n",
      "T0148.jpg [1266.155461549759, 1006.3715310096741]\n",
      "T0301.jpg [1010.157507777214, 1094.5172448158264]\n",
      "T0278.jpg [1194.4022290706635, 1062.8253264427185]\n",
      "T0215.jpg [1146.9467525482178, 1082.1793203353882]\n",
      "T0256.jpg [1262.895364522934, 750.0751402378082]\n",
      "T0321.jpg [1213.1693258285522, 977.9181048870087]\n",
      "T0157.jpg [1100.5338292121887, 1105.6355800628662]\n",
      "T0088.jpg [1410.6397869586945, 1042.1983127593994]\n",
      "T0190.jpg [1300.2349870204926, 1018.2790086269379]\n",
      "T0253.jpg [1098.7476260662079, 1079.145052909851]\n",
      "T0364.jpg [1254.0085570812225, 753.709924697876]\n",
      "T0042.jpg [1111.0177237987518, 1111.4577951431274]\n",
      "T0101.jpg [1349.685303926468, 1124.935040473938]\n",
      "T0180.jpg [1223.102382659912, 988.3995625972748]\n",
      "T0377.jpg [1014.767466545105, 1081.48312997818]\n",
      "T0399.jpg [1031.135804772377, 1115.3497700691223]\n",
      "T0163.jpg [1234.8363282680511, 1011.9338848590851]\n",
      "T0085.jpg [1301.9608018398285, 1134.3586711883545]\n",
      "T0275.jpg [1221.4687328338623, 992.4433734416962]\n",
      "T0061.jpg [1124.3220191001892, 1041.9142484664917]\n",
      "T0030.jpg [1058.035702586174, 1090.732988834381]\n",
      "T0299.jpg [1204.5054366588593, 1011.7493901252747]\n",
      "T0166.jpg [1379.0455513000488, 1029.4286546707153]\n",
      "T0176.jpg [1234.4143695831299, 1053.3980193138123]\n",
      "T0167.jpg [1241.7361693382263, 1037.6559801101685]\n",
      "T0160.jpg [1259.8106360435486, 1000.7018871307373]\n",
      "T0327.jpg [1116.3035380840302, 1082.1809134483337]\n",
      "T0181.jpg [1262.8872756958008, 1000.1740152835846]\n",
      "T0273.jpg [1265.8655469417572, 941.5333659648895]\n",
      "T0400.jpg [1141.0226278305054, 719.758717417717]\n",
      "T0267.jpg [1020.9421412944794, 1059.0611681938171]\n",
      "T0162.jpg [1016.7400252819061, 1102.2694549560547]\n",
      "T0248.jpg [1152.5495738983154, 1051.2507481575012]\n",
      "T0315.jpg [1282.5603239536285, 976.7012116909027]\n",
      "T0270.jpg [1135.2064769268036, 975.3194925785065]\n",
      "T0175.jpg [1323.4047346115112, 1035.7871360778809]\n",
      "T0183.jpg [1277.7260928153992, 1012.9447762966156]\n",
      "T0385.jpg [1112.771010875702, 1092.6915373802185]\n",
      "T0036.jpg [1252.499850511551, 1006.5256340503693]\n",
      "T0340.jpg [1305.4888980388641, 1002.5661969184875]\n",
      "T0068.jpg [1084.2825329303741, 1039.2093877792358]\n",
      "T0099.jpg [1023.204424738884, 1059.3016057014465]\n",
      "T0184.jpg [1022.0647691488266, 1093.6569638252258]\n",
      "T0332.jpg [1568.4113450050354, 825.159505367279]\n",
      "T0395.jpg [1278.4707555770874, 1065.620994567871]\n",
      "T0073.jpg [1251.22460603714, 1048.5143928527832]\n",
      "T0201.jpg [796.8087718486786, 714.2778797149658]\n",
      "T0350.jpg [1324.3377785682678, 987.1577923297882]\n",
      "T0334.jpg [1137.0511693954468, 1019.5011100769043]\n",
      "T0344.jpg [1233.4780340194702, 1053.0037851333618]\n",
      "T0124.jpg [1178.07271027565, 785.0512154102325]\n",
      "T0082.jpg [1211.8445065021515, 711.790310382843]\n",
      "T0037.jpg [1250.2421879768372, 1024.5868780612946]\n",
      "T0103.jpg [1132.9214687347412, 1095.8286218643188]\n",
      "T0289.jpg [1109.5344750881195, 1092.8144521713257]\n",
      "T0011.jpg [1197.9118416309357, 985.1101520061493]\n",
      "T0025.jpg [1043.6734721660614, 1117.1954526901245]\n",
      "T0115.jpg [1190.9895923137665, 990.406946182251]\n",
      "T0355.jpg [1097.287671804428, 1031.3906345367432]\n",
      "T0159.jpg [1083.0403311252594, 1078.1296272277832]\n",
      "T0296.jpg [1046.4621595144272, 1062.0291376113892]\n",
      "T0196.jpg [1281.2282359600067, 1017.2658500671387]\n",
      "T0079.jpg [1278.4817698001862, 1013.7647392749786]\n",
      "T0186.jpg [1144.1196420192719, 1051.3561387062073]\n",
      "T0388.jpg [1162.059152841568, 1087.5242142677307]\n",
      "T0153.jpg [1318.7394971847534, 718.2254393100739]\n",
      "T0020.jpg [807.4939932823181, 725.9993731975555]\n",
      "T0235.jpg [1195.631770849228, 961.0257155895233]\n",
      "T0207.jpg [1266.7833988666534, 1025.1040270328522]\n",
      "T0260.jpg [1230.9832491874695, 976.0779368877411]\n",
      "T0093.jpg [1092.9042642116547, 1114.238389968872]\n",
      "T0269.jpg [1163.961701631546, 1064.1946682929993]\n",
      "T0209.jpg [1226.4538714885712, 942.521341085434]\n",
      "T0330.jpg [1083.2071902751923, 1089.6702599525452]\n",
      "T0044.jpg [1163.877639055252, 1049.1138935089111]\n",
      "T0143.jpg [1322.638929605484, 981.3479545116425]\n",
      "T0135.jpg [1152.5065298080444, 1064.4615759849548]\n",
      "T0258.jpg [1171.6679863929749, 1130.5019898414612]\n",
      "T0126.jpg [1215.1340353488922, 973.8145523071289]\n",
      "T0244.jpg [1241.3695349693298, 1062.4858708381653]\n",
      "T0108.jpg [997.783281326294, 1128.6643953323364]\n",
      "T0397.jpg [1245.5310122966766, 1054.3556027412415]\n",
      "T0132.jpg [1284.2467861175537, 768.0870804786682]\n",
      "T0198.jpg [1299.9208917617798, 1008.4935574531555]\n",
      "T0380.jpg [1244.8296468257904, 994.6848220825195]\n",
      "T0059.jpg [1417.9070219993591, 1055.0044898986816]\n",
      "T0074.jpg [1173.5956535339355, 745.4553809165955]\n",
      "T0308.jpg [1025.0025916099548, 1117.582824230194]\n",
      "T0081.jpg [1388.0028364658356, 754.7436146736145]\n",
      "T0314.jpg [1329.0440168380737, 1005.8597741127014]\n",
      "T0304.jpg [1098.6357114315033, 1135.6500730514526]\n",
      "T0331.jpg [1038.9105169773102, 1046.0178623199463]\n",
      "T0010.jpg [1181.4983704090118, 971.5136682987213]\n",
      "T0234.jpg [1267.8577287197113, 1053.4440970420837]\n",
      "T0341.jpg [1201.1716718673706, 1059.3543009757996]\n",
      "T0047.jpg [979.5679085254669, 1096.9103455543518]\n",
      "T0238.jpg [1278.867141008377, 1057.527000427246]\n",
      "T0369.jpg [1329.2831647396088, 1029.7749729156494]\n",
      "T0326.jpg [1251.9190084934235, 989.6133921146393]\n",
      "T0100.jpg [1147.9067623615265, 989.6573252677917]\n",
      "T0367.jpg [1163.1669051647186, 1026.4943857192993]\n",
      "T0144.jpg [1034.2247879505157, 1098.4416947364807]\n",
      "T0283.jpg [1023.9605448246002, 1126.2411479949951]\n",
      "T0060.jpg [1066.367709159851, 1113.6681780815125]\n",
      "T0290.jpg [1199.8559153079987, 1103.900680065155]\n",
      "T0001.jpg [1293.0328245162964, 990.4526562690735]\n",
      "T0156.jpg [1100.507496356964, 1067.5414309501648]\n",
      "T0382.jpg [1068.0319962501526, 1035.4979248046875]\n",
      "T0057.jpg [1066.8758826255798, 1058.0234389305115]\n",
      "T0022.jpg [1099.355307340622, 1125.1737623214722]\n",
      "T0072.jpg [1104.805448770523, 1020.6983344554901]\n",
      "T0345.jpg [1513.8662252426147, 1049.822093486786]\n",
      "T0323.jpg [1070.4142334461212, 1129.4430599212646]\n",
      "T0325.jpg [1179.5273308753967, 1016.5329568386078]\n",
      "T0051.jpg [907.4842619895935, 756.1866493225098]\n",
      "T0240.jpg [1245.2394518852234, 1024.9521911144257]\n",
      "T0055.jpg [725.7558836936951, 731.363888502121]\n",
      "T0398.jpg [1310.560631275177, 998.0238642692566]\n",
      "T0139.jpg [918.735301733017, 728.6003816127777]\n",
      "T0204.jpg [1104.027616739273, 1059.779049396515]\n",
      "T0252.jpg [1081.124362707138, 1029.7632083892822]\n",
      "T0312.jpg [1375.6539301872253, 1108.192036151886]\n",
      "T0251.jpg [1207.540931224823, 966.9316916465759]\n",
      "T0064.jpg [844.1256077289581, 731.1276288032532]\n",
      "T0199.jpg [1080.1400456428528, 1115.7197399139404]\n",
      "T0170.jpg [1415.3337371349335, 848.2217226028442]\n",
      "T0347.jpg [1220.8883972167969, 1034.1408376693726]\n",
      "T0202.jpg [990.6085277795792, 1081.6452598571777]\n",
      "T0134.jpg [1314.8064243793488, 1011.558522939682]\n",
      "T0228.jpg [1101.362554550171, 1024.9505367279053]\n",
      "T0069.jpg [1198.159345149994, 943.9523241519928]\n",
      "T0197.jpg [1088.7360770702362, 1023.4127538204193]\n",
      "T0378.jpg [1258.9605152606964, 1013.7167620658875]\n",
      "T0288.jpg [1321.1566936969757, 1012.9638936519623]\n",
      "T0110.jpg [1126.859088420868, 1037.5581874847412]\n",
      "T0034.jpg [1254.5869824886322, 1096.5787329673767]\n",
      "T0133.jpg [1045.548865199089, 1023.6660587787628]\n",
      "T0351.jpg [1256.0883350372314, 999.227706193924]\n",
      "T0358.jpg [1103.4334816932678, 1105.8083715438843]\n",
      "T0219.jpg [1392.0184767246246, 747.8181500434875]\n",
      "T0188.jpg [1291.330810546875, 1014.2330532073975]\n",
      "T0371.jpg [768.9218647480011, 747.9124817848206]\n",
      "T0137.jpg [1296.8900797367096, 752.6394832134247]\n",
      "T0165.jpg [1030.9515380859375, 1108.089831829071]\n",
      "T0329.jpg [1267.4234898090363, 1024.5665965080261]\n",
      "T0007.jpg [1212.0040969848633, 1019.7224915027618]\n",
      "T0178.jpg [1243.7812700271606, 967.7741420269012]\n",
      "T0146.jpg [995.4472532272339, 1027.10546708107]\n",
      "T0045.jpg [1104.8979935646057, 1081.5191588401794]\n",
      "T0259.jpg [1104.6616308689117, 1097.9241781234741]\n",
      "T0316.jpg [1077.7381854057312, 1112.5625576972961]\n",
      "T0375.jpg [1378.3548202514648, 1025.2035353183746]\n",
      "T0090.jpg [1128.6623826026917, 1110.8968968391418]\n",
      "T0310.jpg [1054.3972742557526, 1073.9171915054321]\n",
      "T0392.jpg [1268.7535722255707, 739.9275064468384]\n",
      "T0179.jpg [1062.9839372634888, 1096.8563022613525]\n",
      "T0164.jpg [1103.6208500862122, 1079.3410058021545]\n",
      "T0195.jpg [1089.156136751175, 1037.5079431533813]\n",
      "T0346.jpg [1256.4444615840912, 1039.3533806800842]\n",
      "T0233.jpg [1266.3613135814667, 1098.0352058410645]\n",
      "T0203.jpg [1180.724589586258, 1019.3916141986847]\n",
      "T0287.jpg [1072.0304124355316, 1050.4816422462463]\n",
      "T0284.jpg [1068.247596502304, 1047.5511722564697]\n",
      "T0002.jpg [1078.4046092033386, 1054.4134449958801]\n",
      "T0232.jpg [1280.2400970458984, 742.6953167915344]\n",
      "T0320.jpg [1350.75191116333, 1011.9564335346222]\n",
      "T0012.jpg [1262.3037750720978, 1007.0497069358826]\n",
      "T0387.jpg [1246.322010755539, 1034.8052883148193]\n",
      "T0386.jpg [1054.4090480804443, 1025.580551624298]\n",
      "T0003.jpg [1038.0417226552963, 1045.8421297073364]\n",
      "T0231.jpg [1256.9602310657501, 1083.5534415245056]\n",
      "T0305.jpg [1056.851610302925, 1057.8341035842896]\n",
      "T0352.jpg [1296.3624114990234, 995.1070582866669]\n",
      "T0121.jpg [1106.248058795929, 1122.6307864189148]\n",
      "T0192.jpg [1409.9347500801086, 1205.6862592697144]\n",
      "T0396.jpg [1208.3707959651947, 972.4632861614227]\n",
      "T0117.jpg [1093.285964012146, 1096.8828949928284]\n",
      "T0360.jpg [1289.7055163383484, 1010.2321338653564]\n",
      "T0337.jpg [1038.0657767057419, 1037.251697063446]\n",
      "T0125.jpg [1122.5222697257996, 1067.0719528198242]\n",
      "T0254.jpg [1091.0460255146027, 1076.4139671325684]\n",
      "T0004.jpg [1195.27108669281, 1053.2168946266174]\n",
      "T0140.jpg [1385.068654537201, 751.0166501998901]\n",
      "T0018.jpg [1218.5343918800354, 1013.5323898792267]\n",
      "T0145.jpg [1272.316210269928, 1130.5197591781616]\n",
      "T0056.jpg [1086.1753334999084, 1060.4225444793701]\n",
      "T0226.jpg [1062.8706300258636, 1052.0955882072449]\n",
      "T0221.jpg [1284.8739438056946, 1113.7359466552734]\n",
      "T0354.jpg [1241.872771024704, 1046.0128378868103]\n",
      "T0333.jpg [1028.243241906166, 1106.4339747428894]\n",
      "T0076.jpg [1032.8340207338333, 1112.3770213127136]\n",
      "T0006.jpg [1102.0111277103424, 1041.606164932251]\n",
      "T0173.jpg [1229.8585324287415, 995.5947959423065]\n",
      "T0023.jpg [1221.4151329994202, 792.2195670604706]\n",
      "T0391.jpg [1133.5759921073914, 1087.719186782837]\n",
      "T0247.jpg [1079.843801021576, 1133.727063179016]\n",
      "T0016.jpg [1035.7051881551743, 1118.8749613761902]\n",
      "T0026.jpg [1225.6184363365173, 960.0671517848969]\n",
      "T0229.jpg [1096.720755815506, 990.8514246940613]\n",
      "T0043.jpg [1021.5786241292953, 1012.419723033905]\n",
      "T0317.jpg [1088.0859847068787, 1074.7832322120667]\n",
      "T0230.jpg [1110.2095077037811, 1059.4421672821045]\n",
      "T0286.jpg [1097.7691326141357, 1043.1780772209167]\n",
      "T0359.jpg [1219.9361100196838, 981.0137071609497]\n",
      "T0245.jpg [1086.436509847641, 1129.4718585014343]\n",
      "T0246.jpg [1261.0466344356537, 1029.183560371399]\n",
      "T0187.jpg [1036.1151831150055, 1029.7621054649353]\n",
      "T0053.jpg [1365.400916814804, 726.7044513225555]\n",
      "T0191.jpg [1951.494225025177, 1062.7074360847473]\n",
      "T0368.jpg [1236.6765897274017, 1007.2690050601959]\n",
      "T0071.jpg [1204.3304750919342, 1017.3893163204193]\n",
      "T0033.jpg [1105.041811466217, 1106.3872842788696]\n",
      "T0302.jpg [1062.1274864673615, 1088.5465025901794]\n",
      "T0154.jpg [1259.3658893108368, 1009.2320265769958]\n",
      "T0098.jpg [1145.4176745414734, 1049.5680532455444]\n",
      "T0390.jpg [1038.0657767057419, 1037.251697063446]\n",
      "T0220.jpg [1080.9739615917206, 1036.8107724189758]\n",
      "T0276.jpg [1164.0519676208496, 1023.1864705085754]\n",
      "T0094.jpg [1079.1886446475983, 1042.8969540596008]\n",
      "T0366.jpg [1092.616628408432, 1067.6424098014832]\n",
      "T0383.jpg [1181.1335084438324, 1052.4428868293762]\n",
      "T0066.jpg [1277.1532266139984, 1045.3157896995544]\n",
      "T0136.jpg [1312.2394773960114, 1064.541109085083]\n",
      "T0015.jpg [1119.0436742305756, 1052.263355255127]\n",
      "T0013.jpg [1090.3549146652222, 1055.898226261139]\n",
      "T0211.jpg [1114.7109067440033, 1069.8755865097046]\n",
      "T0106.jpg [1151.4394857883453, 726.2139434814453]\n",
      "T0349.jpg [1120.1713027954102, 1010.0267448425293]\n",
      "T0114.jpg [1257.884792804718, 1044.7385926246643]\n",
      "T0049.jpg [1141.725504398346, 1128.4346194267273]\n",
      "T0281.jpg [1003.7206438779831, 1070.6769223213196]\n",
      "T0038.jpg [1325.124878168106, 785.3321449756622]\n",
      "T0348.jpg [1092.8956553936005, 1102.1121044158936]\n",
      "T0028.jpg [1089.806355714798, 1133.6741228103638]\n",
      "T0293.jpg [1125.0060403347015, 1116.6498727798462]\n",
      "T0070.jpg [1134.3102736473083, 1140.9385952949524]\n",
      "T0224.jpg [1047.3522226810455, 1100.5507311820984]\n",
      "T0393.jpg [1258.2889008522034, 995.0418019294739]\n",
      "T0208.jpg [1264.3648273944855, 1035.5642228126526]\n",
      "T0131.jpg [1403.21976852417, 764.5094459056854]\n",
      "T0394.jpg [1238.9264030456543, 1046.168227672577]\n",
      "T0285.jpg [1099.5067212581635, 1085.6934823989868]\n",
      "T0177.jpg [1280.5128178596497, 953.6578133106232]\n",
      "T0027.jpg [1086.610965013504, 1067.9024548530579]\n",
      "T0271.jpg [1246.1810021400452, 749.3112769126892]\n",
      "T0389.jpg [1249.3140814304352, 1008.4623079299927]\n",
      "T0223.jpg [1252.2984294891357, 958.0660181045532]\n",
      "T0009.jpg [1118.5923442840576, 1008.846554517746]\n",
      "T0306.jpg [1282.0954477787018, 1033.2810468673706]\n",
      "T0237.jpg [1320.1178119182587, 1021.8765640258789]\n",
      "T0282.jpg [1263.9617321491241, 1129.2232103347778]\n",
      "T0338.jpg [1193.9700157642365, 970.5692586898804]\n",
      "T0120.jpg [1255.4547007083893, 1053.2736339569092]\n",
      "T0105.jpg [1188.45809340477, 1046.736478805542]\n",
      "T0263.jpg [1305.3887572288513, 1016.5988259315491]\n",
      "T0353.jpg [1165.7200527191162, 954.9351222515106]\n",
      "T0356.jpg [1317.902180671692, 1023.35693359375]\n",
      "T0280.jpg [1076.690441608429, 1123.4065098762512]\n",
      "T0361.jpg [1088.556051492691, 1064.637921333313]\n"
     ]
    }
   ],
   "source": [
    "import os\r\n",
    "import numpy as np\r\n",
    "import pandas as pd\r\n",
    "from PIL import Image\r\n",
    "import paddle.vision.transforms as T\r\n",
    "import paddle\r\n",
    "import paddle.nn as nn\r\n",
    "import paddle.nn.functional as F\r\n",
    "from paddle.vision.models import resnet50\r\n",
    "\r\n",
    "save_path = 'Fovea_Localization_Results.csv'\r\n",
    "file_path = 'PLAM/PALM-Testing400-Images'\r\n",
    "imgs_name = os.listdir(file_path)\r\n",
    "\r\n",
    "model = nn.Sequential(\r\n",
    "    resnet50(pretrained=False),\r\n",
    "    nn.LeakyReLU(),\r\n",
    "    nn.Linear(1000, 2)\r\n",
    ")\r\n",
    "params = paddle.load('resnet_50_save_models_256_0.9_16/final.pdparams')\r\n",
    "model.set_state_dict(params)\r\n",
    "model.eval()\r\n",
    "\r\n",
    "inf_transforms = T.Compose([\r\n",
    "    T.Resize((tpsize, tpsize), interpolation='bicubic'),\r\n",
    "    T.ToTensor()\r\n",
    "])\r\n",
    "\r\n",
    "pre_data = []\r\n",
    "for img_name in imgs_name:\r\n",
    "    data_path = os.path.join(file_path, img_name)\r\n",
    "    data = np.asarray(Image.open(data_path).convert('RGB'))\r\n",
    "    H, W, _ = data.shape\r\n",
    "    data = inf_transforms(data)\r\n",
    "    data = data.astype('float32').reshape([1, 3, tpsize, tpsize])\r\n",
    "    pred = model(data)\r\n",
    "    pre = [None] * 2\r\n",
    "    # 还原坐标\r\n",
    "    pre[0] = pred.numpy()[0][0] * W / tpsize\r\n",
    "    pre[1] = pred.numpy()[0][1] * H / tpsize\r\n",
    "    print(img_name, pre)\r\n",
    "    pre_data.append([img_name, pre[0], pre[1]])\r\n",
    "\r\n",
    "df = pd.DataFrame(pre_data, columns=['FileName', 'Fovea_X', 'Fovea_Y'])\r\n",
    "df.sort_values(by=\"FileName\",inplace=True,ascending=True)  #千万记得排序！\r\n",
    "df.to_csv(save_path, index=None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>FileName</th>\n",
       "      <th>Fovea_X</th>\n",
       "      <th>Fovea_Y</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>246</th>\n",
       "      <td>T0001.jpg</td>\n",
       "      <td>1293.032825</td>\n",
       "      <td>990.452656</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>304</th>\n",
       "      <td>T0002.jpg</td>\n",
       "      <td>1078.404609</td>\n",
       "      <td>1054.413445</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>310</th>\n",
       "      <td>T0003.jpg</td>\n",
       "      <td>1038.041723</td>\n",
       "      <td>1045.842130</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>322</th>\n",
       "      <td>T0004.jpg</td>\n",
       "      <td>1195.271087</td>\n",
       "      <td>1053.216895</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>124</th>\n",
       "      <td>T0005.jpg</td>\n",
       "      <td>1229.637487</td>\n",
       "      <td>723.297234</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>316</th>\n",
       "      <td>T0396.jpg</td>\n",
       "      <td>1208.370796</td>\n",
       "      <td>972.463286</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>222</th>\n",
       "      <td>T0397.jpg</td>\n",
       "      <td>1245.531012</td>\n",
       "      <td>1054.355603</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>258</th>\n",
       "      <td>T0398.jpg</td>\n",
       "      <td>1310.560631</td>\n",
       "      <td>998.023864</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>156</th>\n",
       "      <td>T0399.jpg</td>\n",
       "      <td>1031.135805</td>\n",
       "      <td>1115.349770</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>170</th>\n",
       "      <td>T0400.jpg</td>\n",
       "      <td>1141.022628</td>\n",
       "      <td>719.758717</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>400 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      FileName      Fovea_X      Fovea_Y\n",
       "246  T0001.jpg  1293.032825   990.452656\n",
       "304  T0002.jpg  1078.404609  1054.413445\n",
       "310  T0003.jpg  1038.041723  1045.842130\n",
       "322  T0004.jpg  1195.271087  1053.216895\n",
       "124  T0005.jpg  1229.637487   723.297234\n",
       "..         ...          ...          ...\n",
       "316  T0396.jpg  1208.370796   972.463286\n",
       "222  T0397.jpg  1245.531012  1054.355603\n",
       "258  T0398.jpg  1310.560631   998.023864\n",
       "156  T0399.jpg  1031.135805  1115.349770\n",
       "170  T0400.jpg  1141.022628   719.758717\n",
       "\n",
       "[400 rows x 3 columns]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## 5. 查看结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2021-08-14 01:17:38,375 - INFO - font search path ['/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf', '/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/afm', '/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/pdfcorefonts']\n",
      "2021-08-14 01:17:38,885 - INFO - generated new fontManager\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import os\r\n",
    "import numpy as np\r\n",
    "import pandas as pd\r\n",
    "from PIL import Image\r\n",
    "import matplotlib.pyplot as plt\r\n",
    "\r\n",
    "%matplotlib inline\r\n",
    "\r\n",
    "path = 'PLAM/PALM-Testing400-Images'\r\n",
    "flrs = np.array(pd.read_csv('Fovea_Localization_Results.csv'))\r\n",
    "for flr in flrs:\r\n",
    "    img = np.array(Image.open(os.path.join(path, flr[0])))\r\n",
    "    x, y = flr[1:]\r\n",
    "    plt.imshow(img.astype('uint8'))\r\n",
    "    plt.plot(x, y, 'or')\r\n",
    "    plt.show()\r\n",
    "    break"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "# 总结\n",
    "1. 数据要选择一个合适的标准进行处理，两种图片大小1440和2124，如果缩放的太小或者太大都会导致其中一个效果不好，上个版本我尝试了大尺寸的图片，由于尺寸太大，网络模型太大，导致训练特别慢，这次改用小尺寸换用更多轮次看看效果如何。\n",
    "2. 网络选取要合理QAQ，我这个应该就很不合理\n",
    "3. 通过近几个版本的尝试，还是采用了resnet50,然后使用256的分辨率最为合适，太大了并没有降低误差反而得分很低。\n",
    "4. 记得去进行排序，本来质量就不高，再不排序，分值就更低了。\n",
    "## 参考资料\n",
    "眼底彩照中黄斑中央凹定位相关论文\n",
    "1. [Macula segmentation and fovea localization employing image processing and heuristic based clustering for automated retinal screening](https://www.sciencedirect.com/science/article/abs/pii/S0169260717304145)\n",
    "2. [A Pixel-Wise Distance Regression Approach for Joint Retinal Optic Disc and Fovea Detection](https://agaldran.github.io/pdf/od_fovea_location.pdf)\n",
    "3. [飞桨常规赛：PALM眼底彩照中黄斑中央凹定位 - 5月第一名方案](https://aistudio.baidu.com/aistudio/projectdetail/1894458)\n",
    "4. [常规赛：PALM眼底彩照中黄斑中央凹定位比赛Baseline](https://aistudio.baidu.com/aistudio/projectdetail/1889502)\n",
    "\n",
    "## 个人总结\n",
    ">全网同名: iterhui\n",
    "\n",
    ">我在AI Studio上获得钻石等级，点亮9个徽章，来互关呀~\n",
    "\n",
    "https://aistudio.baidu.com/aistudio/personalcenter/thirdview/643467"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "PaddlePaddle 2.0.0b0 (Python 3.5)",
   "language": "python",
   "name": "py35-paddle1.2.0"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
